In software development, source code is compiled into object code by a compiler. The object code can be linked with other object code and libraries to make an executable program that can be run on a computer. A mathematical function in the source code is implemented either in the source code or in the library. An example library is libm, a widely used math library. For a basic mathematical function (such as an exponential function, exp(x), or a logarithm function, log(x)), the conventional implementation is to define the math function in a standard math library. A standard math library, designed to support general applications, can be robust, accurate, and able to handle fringe situations and exceptions. Such requirements, however, dictate that the library be complex, and its routines resource-intensive.
Certain applications, such as MP3 players, are limited in the amount of computational expense they can incur. Such applications execute some mathematical functions a large number of times during typical operation. If the application were to use a common library implementation of the math functions (such as those in libm), the application would exceed its computational expense constraints. If the application were to use its own definitions of the functions, the portability of the source code across various platforms would be reduced.